約 2,525,970 件
https://w.atwiki.jp/miura_takashi/pages/7.html
~/.bashrc, ~/.bash_profile, /etc/profile, /etc/bashrc ってどう違うのよ? † 全部 bash で読み込まれる初期化設定ファイル。けど、読み込まれるタイミングがちょっと違う。 ホームディレクトリにある .bashrc と .bash_profile はユーザーの個人用の設定で、/etc にある2つはシステムの標準設定。/etc/profile と ~/.bash_profile はログイン時のシェル(ログインシェル)で1回だけ読み込まれる設定で、/etc/bashrc と ~/.bashrc はシェルの起動時に毎回読み込まれる設定。 普通は .bashrc か .bash_profile のどちらかに書いておけば大丈夫。PATH HOWTO とか 0からのbash で起動時の流れがちょっとだけ解説してあるよ。
https://w.atwiki.jp/beautiful_world/pages/26.html
For文の書き方(JDK1.5より可能な記述方法) 例 for (String str strs) { // 各要素を扱う処理 System.out.println(str); } 解説) for文の「 」の右側には、配列またはコレクションを置くことができ、左側には各要素の型と変数名とを宣言します。 この式で、配列またはコレクションのすべての要素に対して、順に処理が行われます。また、各要素のクラスは、for文のカッコの中(「(String str strs)」)ですでに宣言されているので、以降の明示的なキャストが必要なくなります。 これまでは、配列やコレクションの各要素を取り扱うには、以下のようにコードを記述しました。 配列の場合 String[] strs = new String[3]; strs[0] = "eins"; strs[1] = "zwei"; strs[2] = "drei"; for (int i = 0; i strs.length; i++) { // 各要素を扱う処理 System.out.println(strs[i]); } コレクションの場合 Collection strs = new ArrayList(); strs.add("eins"); strs.add("zwei"); strs.add("drei"); for (Iterator it = strs.iterator(); it.hasNext(); ) { String str = (String) it.next(); // 各要素を扱う処理 System.out.println(str); } このように、for文の度にインデックスや反復子(iterator)を宣言しなければなりませんでした。そのため、for文が入れ子になっているような複雑な操作をする場合には、見通しが悪くバグの温床になりがちでした。 また、コレクションの場合には、リストの赤字部分に示すように各要素を取り出す際にクラスキャストが必要でした。これは単に1行追加しなくてはならないというだけでなく、誤ったクラスキャストをコードに忍び込ませてしまう原因になるものでした。クラスキャストの誤りはコンパイル時には検証できないものなので、検出しにくいバグを生み出す温床となります。
https://w.atwiki.jp/shinobu2/pages/53.html
for文の少し違った使い方として拡張for文(for-each文)という使い方ができるようになりました。これは配列やコレクションと呼ばれる複数の要素を持っているものから全ての要素に含まれる値を順に取り出して処理するために使われます。配列やコレクションについては今後別のページで詳しく解説しますのでこの時点ではそういった文が用意されていることだけ覚えておいて下さい。 書式は次の通りです。 for (データ型 変数名 コレクション){ 実行する文1; 実行する文2; ... } 以前に解説したfor文と同じですが括弧の中はまったく別のものとなっています。この形式では値を順に取り出したい配列やコレクションと、取り出した値を格納する変数の二つをセミコロン(;)ではなくコロン( )で区切って記述します。繰り返される回数は配列やコレクションに含まれている値の数だけなので条件式は必要ありませんし変化式も必要ありません。 実際には次のような使い方となります。 int data[] = {85, 72, 89}; for (int seiseki data){ System.out.println(seiseki); } この場合は次のような処理の流れとなります。 1)配列dataを宣言し初期化 2)配列から要素に含まれる値を1つ取り出し変数seisekiに代入 3)変数seisekiを出力 4)配列から要素に含まれる値を1つ取り出し変数seisekiに代入 5)変数seisekiを出力 6)配列から要素に含まれる値を1つ取り出し変数seisekiに代入 7)変数seisekiを出力 8)配列から全ての値を取り出したので繰り返しを終了 今回は配列の3つの要素がありますので、3つの要素に含まれる値を取り出しながらブロック内の処理を行っていきます。 なおfor-each文は比較的新しく用意された文で、以前であれば次のように記述していました。 int data[] = {85, 72, 89}; for (int i = 0; i data.length; i++){ System.out.println(data[i]); } 全ての要素の合計を取得したい場合など取り出す順序に関係なく全ての要素を1回ずつ取り出したい場合に便利な文です。 わからないところがあったら以下に書き込んでください。 test -- (test) 2010-12-10 22 01 03 テスト -- (test) 2010-12-10 23 00 34 hosei -- (HOSEI) 2011-01-31 14 10 34 test -- (名無しさん) 2011-01-31 14 10 53 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/nopu/pages/18.html
ジャンル別UNIXコマンド一覧 システムコールなどの解説もあり。 (九大) bash,awk,sed スキルアップ輪講 Linux便利帳 sh は bash csh は違う系列 3つのクオーテーション $var 無くても変わらない。スペースを含むときに1つの文字列として認識させるのに使う。 $var メタキャラクタとか変数指定子$の働きを殺す。 `ls -a` コマンドを囲んで,その出力を値に持つ。パイプでは対応できない複雑な引数のときに活躍。 Ex. バッククオーテーションは grep などと連携して威力無限大 tar hoge.tar.gz `ls -F | egrep [^*/~]` メタキャラクタ *の役割が正規表現と違うので注意! * 任意文字列 ? 任意1文字 [a-z] 指定された中から任意の1文字 {hoge,hage,tako} 指定された文字列の中から任意のどれか 正規表現 sed, grep, perl, ruby などで使用 * は,直前の文字の0回以上の繰り返しになる。 ^ 行頭 $ 行末 [...] いずれか1文字 [^...] 禁止文字 or検索 grep one|two|three grep -e one -e two -e three マッチしたものを表示しない grep -v .eps$|.o$|~$ 所有者と権限 所有者とパーミッションの表示 ls -l 実行パーミッション chmod 755 hoge 所有者の変更 chown owner_name file_name chown -R owner_name dir_name プロセス管理 ジョブというのは,例えばパイプとかでつないで1機能をなしているプロセスのまとまりのこと。 ^Z による中断とか, 付きの実行とかは,要するに bg してることになる。 間違って ^Z で Suspended してしまったのを復活させたい。 ^Z # 中断 jobs # まず落ち着いてジョブの番号を調べる。 [1] - Suspended ほげほげ [2] + Suspended (tty output) emacs なんとか 思い切って殺す kill %2 復活させる fg %1 シェルスクリプトを通常のプログラムのように実行させる hoge.sh #!/bin/sh ←スクリプトを実行するプログラムのパスを書いておく。 (スクリプト) 実行方法 chmod u+x hoge.sh ←実行属性を付ける。 ./hoge.sh Cf. コマンドから実行するときは #! も chmod も不要。 sh hoge.sh のみでおk 変数 代入 var=val 参照 echo $var 実際には,$ は変数の内容で置き換える演算子 スクリプト実行時にもらった変数 $1,$2,...で指定できる。 ちょっと削る fpath=foo/var/baz echo ${fpath%/*} - 後ろから match する min 部分を削る。 - foo/var echo ${fpath%%/*} - 後ろから match する max 部分を削る。 - foo echo ${fpath#*/} - 前から match する min 部分を削る。 - var/baz echo ${fpath##*/} - 前から match する max 部分を削る。 - baz 制御 改行はむやみやたらに入れられない。セミコロンで置き換えられる。 機能語との間のスペースも必ず「1つ」必要なので注意! if文 if 式 then なにがし else それがし fi Ex. ディレクトリが無ければ作る if [ ! -d hoge/hage]; then mkdir -p hoge/hage; fi for文 for target in list do command done Ex. .txt を .doc に一括変更 for file in *.txt; do mv $file ${file%.txt}.doc; # %なんとか ってのは,マッチした尻を削る命令 done 注. ファイル名の一括変更はコマンド一発 rename *.txt *.doc 一括操作 階層ディレクトリおっぴろげ ls -R 複数の下位ディレクトリに散在する cpp と hpp から検索 grep hoge */*pp hoge.* を hage.* に変える。 for F in *; do mv $F ${F/hoge/hage}; done ←${変数名/置換対象/置換文字列}の順番 複数ファイルに含まれる文字列 hoge を hage に置換 1. grep hoge *pp で確認 2. for F in *; do cp $F $F.bak; sed -e s/hoge/hage/g $F.bak $F; done (.bakはあとで消す。.bak を経由しないと上手くいかなかった!) 印刷 片面白黒(標準) lpr lpr -Pps1 両面白黒 lpr -Pps1d lpr -C,dup 両面白黒 短辺綴じ lpr -Pps1t lpr -C,dup,tumble 片面カラー lpr -Pcps1 両面カラー lpr -Pcps1d lpr -Pcps1-duplex 両面カラー 短辺綴じ lpr -Pcps1t マウント マウントしたらアンマウントを忘れずに! umount/mnt/hoge CD/DVD HDD(IDE devices) mount /dev/hdb1 /mnt/hdd Image(.iso) mount -o loop ***.iso /mnt/image cd /mnt/image == アーカイブ 圧縮 tar zcvf hoge.tar.gz (圧縮するターゲット列挙) zip hoge.zip (圧縮するターゲット列挙) 解凍 tar の解凍先はデフォルトでカレントディレクトリなので、 1. 解凍したい場所に移動してからファイルを指定する。 2. -C 解凍先 オプションを漬ける。 tar zxvf hoge.tar.gz bzip2 -dc hoge.bz2 unzip hoge.zip tar jxvf hoge.tar.bz2 lha e hoge.lzh ファイル操作 ファイルの種類を調べる。 file hoge ファイルの詳細な情報を調べる。 stat hoge 登録されているコマンドのパスを調べる。 which hoge 画像フォーマット変換 Imagemagicを使う。ただしコマンド名は convert Ex. epsをpngに変換 convert hoge.eps hage.png 詳しくはココなど参照 ネットワーク 誰が入ってるか見る who cygwinから入る startx してから入る sshで接続 ssh [ユーザ名]@むにゃむにゃ ( login ) ruptime で空いてるマシン確認 ssh [マシン名] で入る ( 作業ディレクトリに移動 ) screen に入ることを忘れずに! 自宅からうp ssh でリモートに入ってしまわないこと! scp [ローカルのファイル] [ユーザ名]@[アドレス] [コピー先のファイル名] 入出力 redirection 入出力先を変えること。 tako.txtに出力 ./a.out tako.txt ./a.out tako.txt # こっちは追加モード hage.datから入力 ./a.out hage.dat 応用. ファイルコピー cat original.txt copy.txt 標準エラー出力先の変更 ./a.out 2 err.log STDOUTとSTDERRを同じファイルに出力 ./a.out output.log pipe 左から順に実行される。 左からの出力を右の入力に渡していく。 command1 | command2 | command3 | ... 現在地を表示 pwd 時間計測 time command real 実行にかかった実時間 user ユーザーモードだった時間(種々の演算やメモリアクセス) sys カーネルモードだった時間(システムコール) rem. real = user + sys + ディスクI/Oの時間 情報の表示 画面描画の詳細を表示 xrandr Xの設定を表示 cat /etc/X11/xorg.conf システムの構成が分かる。 メモリ使用状況を表示 free top (リアルタイム) 現在ログインしている人を表示 who カレントディレクトリのアドレスを表示 pwd CPUの情報を表示 cat /proc/cpuinfo ( /proc/ には,他にも meminfo などがある。) ホスト名を表示 hostname IPアドレスを調べる ifconfig システムの情報を表示 dmesg カーネルの情報を表示 uname -a デバイスの情報を調べる lspci ←PCIの情報 lsusb ←USBの情報 インストール yum yum install hogehoge sourceからインストール ./configure --prefix=/usr/local; make; su make install パスを通す ~/.bashrc を書き換える。 一時的な方法 export PATH=/usr/local/hoge $PATH 全ユーザーに適用 /etc/profile.d/hoge.sh を作る。 ライブラリパスは別に作る export LD_LIBRARY_PATH=/usr/local/lib オリジナルコマンドを作る alias hoge= echo hage hoge → hage .bashrc にでも書けば毎回使える。
https://w.atwiki.jp/c0metssd/pages/86.html
正規表現で文字列が含まれるのかを確認して、値を抜き出す BASH_REMACHという特別な変数を参照する if [[ "asd1234567890_1234" =~ ([0-9]{5})([0-9]{5})_1234 ]]; then echo ${BASH_REMATCH[0]}; echo ${BASH_REMATCH[1]}; echo ${BASH_REMATCH[2]};s fi 実行 $ bash a.sh 1234567890_1234 12345 67890 関数の書き方 #!/bin/bash if test `whoami` != root ; then echo "rootユーザで起動してください。" exit 1; fi echo "shellの引数1 = $1" #戻り値設定用変数 rtn="" func() { echo "引数1 = $1" echo "引数2 = $2" # 関数内で戻り値設定用変数に戻り値を設定する return 0 } func "aaa" "bbb" RET_CODE=$? echo "戻り値=$RET_CODE" if [ $RET_CODE -eq 0 ] then echo ok else echo ng fi 実行結果 [root@localhost]# ./b.sh 123 shellの引数1 = 123 引数1 = aaa 引数2 = bbb 戻り値=0 ok デバッグ方法 "-x"付きで起動する bash -x デバッグするシェルスクリプト ある程度まとまった引数をコマンドに渡す方法 mysql -u root -ppassword hogedb EOF CREATE TABLE tbl_a AS SELECT * FROM tbl_b limit 1; delete from tbl_a EOF RET_CODE=$? if [[ ${RET_CODE} -ne 0 ]];then echo "tbl_aの作成に失敗しました:$RET_CODE" return 1 fi 例は、テーブルをコピーしつつ、データを削除する方法 EOFという文字列(先頭に空白を入れては駄目)が来るまで何行でも記載できる ログに標準出力(1)と標準エラー(2)出力の両方をリダイレクトする スクリプト ログファイル名 2 1 for分で指定回数だけまわす簡単な方法 $ for i in `yes |head -2` do echo $i done 実行結果は下記のとおり。$iは同じものが入ってしまうので、使えないが、head -nで指定したn回分だけまわしたい時は、これが一番単純かな? y y 2014/10/22
https://w.atwiki.jp/yoshinabu/pages/52.html
bash シェルです。 参考URLhttp //cyberam.dip.jp/linux_command/bash/bash_main.html
https://w.atwiki.jp/wiki3_nab/pages/43.html
概要 bashはシェルの一種。シェルが何かは省略。設定メモをバックアップを兼ねておいておく。 手順/メモ 1)インストール&設定 インストールはportsから # cd /usr/ports/shells/bash # make install clean ログインシェルにするにはchshでShellの行を書き替え。 Shell /usr/local/bin/bash 2)設定ファイル .profile shからも読みこまれるので、極力こっちに設定を書き込んでいる。 .shrc shからも読みこまれる。インタラクティブモードの時に読みこまれる。 .bashrc bash独自の設定とかはここに書き込む。最初に.profileを読み込むようにしている。 .bash_profile .bashrcを読みこむだけの設定。 問題点、課題 設定ファイルは今度、コメントをいれてアップし直し。 環境 OS FreeBSD 6.1-Release PC Panasonic CF-R3
https://w.atwiki.jp/goemode/pages/14.html
http //www.palmtb.net/index.php?bash%A5%E1%A5%E2%BD%F1%A4%AD http //www.mitz.jp/~mitz/freebsd/bash.html http //blog.miraclelinux.com/ctd/2006/09/bash_9f44.html
https://w.atwiki.jp/sunbalcan/pages/49.html
bashログイン時読み込み順序(基本) /etc/profile ~/.bash_profile ~/.bashrc (正確には2から呼び出される) /etc/bashrc の順番で読み込まれ、環境変数等が設定される。 ユーザ情報 ユーザ情報(ログインシェルなど)は、/etc/passwd に グループ情報は、/etc/group に ユーザパスワードは、/etc/shadow に 記載されている。
https://w.atwiki.jp/okoba0119/pages/12.html
リストファイルから読み込むshell(bash)